﻿#include "spin_lock.h"

namespace breaking
{
	void spin_lock::lock()
	{
		// 使用memory_order_acquire等待标志，确保能够看到其他线程的写入
		while (m_flag.test_and_set(std::memory_order_acquire))
		{
			// 忙等，不断检查flag是否为false
		}
	}
	void spin_lock::unlock()
	{
		// 使用memory_order_release释放标志，确保先前写入对其他线程可见
		m_flag.clear(std::memory_order_release);
	}
}